package com.explorati.LeetCode18.deleteNode;

/**
 * @ Author : Weijian_Wang
 * @ Date : Created in 17:43 2020/9/13 0013
 * @ Description ：
 */
public class Solution1 {
    public class ListNode {
        int val;
        ListNode next;
        ListNode(int x) { val = x; }
    }

    /**
     * 给定单向链表的头指针和一个要删除的节点的值，定义一个函数删除该节点。
     * 返回删除后的链表的头节点。
     * @param head
     * @param val
     * @return
     */
    public ListNode deleteNode(ListNode head, int val) {

      ListNode dummyHead = new ListNode(-1);
      dummyHead.next = head;

      ListNode cur = dummyHead;
      while(cur.next != null) {
          if(cur.next.val == val) {
              cur.next = cur.next.next;
              //由于题目设定：一个元素只出现一次
              return dummyHead.next;
          }
          cur = cur.next;
      }
      return dummyHead.next;
    }

}
